<!--
 * @Author: your name
 * @Date: 2021-08-03 15:32:19
 * @LastEditTime: 2021-08-17 19:55:03
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \Self\hrsaas-86\src\views\dashboard\index.vue
-->
<template>
  <div class="app-container">
    <upload-excel :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>
</template>

<script>
import { reqImportEmployee } from '@/api/employees'
import moment from 'moment'
export default {
  name: 'ImportExcel',
  methods: {
    beforeUpload(file) {
      // 上传文件预校验的函数 这个函数中可以做文件大小的显示 文件类型的限制
      const isLt1M = file.size / 1024 / 1024 < 1

      if (isLt1M) {
        return true
      }

      this.$message({
        message: '上传少于1M的文件',
        type: 'warning'
      })
      return false
    },
    async handleSuccess({ results, header }) {
      if (this.type === 'user') {
        console.log(results) // 表格的内容
        // console.log(header) // 表格的标题
        // 1.发送请求前 处理数据字段名称
        const userRelations = {
          入职日期: 'timeOfEntry',
          手机号: 'mobile',
          姓名: 'username',
          转正日期: 'correctionTime',
          工号: 'workNumber'
        }
        const res = results.map(item => {
          // console.log(item) // item是每一个用户信息 (对象)
          // 遍历对象
          const obj = {}
          for (const key in item) {
            // console.log(key) // key是:前面的汉字
            // console.log(item[key]) // item[key]是:后面的值
            const englishKey = userRelations[key]
            // 如果英文的键是correctionTime 或者是timeOfEntry 是要处理日期格式的
            if (['correctionTime', 'timeOfEntry'].includes(englishKey)) {
              obj[englishKey] = moment(this.formatExcelDate(item[key], '-'))
                .add(1, 'days')
                .format('YYYY-MM-DD')
            } else {
              obj[englishKey] = item[key]
            }
          }
          // console.log(obj)
          return obj
        })
        // console.log(res) // 收集到的数据 [{mobile:xxx, username:xxx}]
        // 2. 发送请求
        const { message } = await reqImportEmployee(res)
        // 3. 提示用户
        this.$message.success(message)
        // 4. 原路返回
        this.$router.back()
      }
    },

    // 转换excel的日期格式
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return (
          year +
          format +
          (month < 10 ? '0' + month : month) +
          format +
          (date < 10 ? '0' + date : date)
        )
      }
      return (
        year +
        (month < 10 ? '0' + month : month) +
        (date < 10 ? '0' + date : date)
      )
    }
  }
}
</script>
